From 823550cc473db8ff50d2934eeae0dbd52fe02e32 Mon Sep 17 00:00:00 2001 From: "emellor@ewan" Date: Tue, 27 Sep 2005 22:02:57 +0100 Subject: [PATCH] Added behaviour to list() to list the transaction's path if no arguments are given. Added list_recursive(). Signed-off-by: Ewan Mellor --- tools/python/xen/xend/xenstore/xstransact.py | 34 ++++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/tools/python/xen/xend/xenstore/xstransact.py b/tools/python/xen/xend/xenstore/xstransact.py index 04e36f15f5..14d8b0472d 100644 --- a/tools/python/xen/xend/xenstore/xstransact.py +++ b/tools/python/xen/xend/xenstore/xstransact.py @@ -1,4 +1,5 @@ # Copyright (C) 2005 Christian Limpach +# Copyright (C) 2005 XenSource Ltd # This file is subject to the terms and conditions of the GNU General # Public License. See the file "COPYING" in the main directory of @@ -9,6 +10,7 @@ import threading from xen.lowlevel import xs from xen.xend.xenstore.xsutil import xshandle + class xstransact: def __init__(self, path): @@ -105,13 +107,39 @@ class xstransact: return [] def list(self, *args): + """If no arguments are given, list this transaction's path, returning + the entries therein, or None if no entries are found. Otherwise, + treat each argument as a subpath to this transaction's path, and + return the cumulative listing of each of those instead. + """ if len(args) == 0: - raise TypeError + return xshandle().ls(self.path) + else: + ret = [] + for key in args: + ret.extend(self._list(key)) + return ret + + + def list_recursive_(self, subdir, keys): ret = [] - for key in args: - ret.extend(self._list(key)) + for key in keys: + new_subdir = subdir + "/" + key + l = xshandle().ls(new_subdir) + if l: + ret.append([key, self.list_recursive_(new_subdir, l)]) + else: + ret.append([key, xshandle().read(new_subdir)]) return ret + + def list_recursive(self, *args): + if len(args) == 0: + args = self.list() + + return self.list_recursive_(self.path, args) + + def gather(self, *args): if len(args) and type(args[0]) != tuple: args = args, -- 2.30.2